Increasingly, database systems are deployed having a master database and a number of client databases, where the client databases each have data from the master database. When the client databases are allowed to modify, add or delete data, it can be difficult to manage conflicts or collisions. For example, two different clients may attempt to change the same item of data at the same time, resulting in a conflict situation.
One approach to resolve such collisions is to use time stamps or other timing information to identify the first request so that the earliest change request will be performed and any later, colliding requests will be ignored. Unfortunately, this approach does not allow portions of rows to be changed by separate (otherwise colliding) requests, and can further result in the need to transmit an undesirable number of messages between the master database and participating client databases.
Another approach to resolving database collisions is to change the database schema, so that each client database has a unique identifier associated with each row or record. In this manner, collisions are avoided in their entirety (as each row or record identifier is unique). Unfortunately, this approach requires changes in the database schema and the creation of extra data, impairing database performance and efficiency.
Accordingly, improved techniques for collision resolution in an asynchronous database system are needed.